/**
 * 日志记录器类
 * 用于记录系统日志和错误信息
 */
class Logger {
  constructor() {
    this.logs = [];
  }

  /**
   * 记录信息日志
   * @param {string} message - 日志消息
   * @param {Object} data - 相关数据
   */
  info(message, data = null) {
    const logEntry = {
      type: 'info',
      timestamp: new Date(),
      message,
      data
    };
    this.logs.push(logEntry);
    console.info(`[INFO] ${message}`, data);
    return logEntry;
  }

  /**
   * 记录警告日志
   * @param {string} message - 警告消息
   * @param {Object} data - 相关数据
   */
  warn(message, data = null) {
    const logEntry = {
      type: 'warning',
      timestamp: new Date(),
      message,
      data
    };
    this.logs.push(logEntry);
    console.warn(`[WARNING] ${message}`, data);
    return logEntry;
  }

  /**
   * 记录错误日志
   * @param {string} message - 错误消息
   * @param {Error} error - 错误对象
   */
  error(message, error = null) {
    const logEntry = {
      type: 'error',
      timestamp: new Date(),
      message,
      error: error ? {
        name: error.name,
        message: error.message,
        stack: error.stack
      } : null
    };
    this.logs.push(logEntry);
    console.error(`[ERROR] ${message}`, error);
    return logEntry;
  }

  /**
   * 获取所有日志
   * @returns {Array} 日志数组
   */
  getLogs() {
    return this.logs;
  }

  /**
   * 清除所有日志
   */
  clearLogs() {
    this.logs = [];
  }
}

// 单例模式实现
const logger = new Logger();
Object.freeze(logger);

export default logger;
